<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>条件渲染</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <script type="text/javascript">
      Vue.config.productionTip = false;
    </script>
  </head>
  <body>
    <div id="root">
      <!-- v-show可通过true或false控制是否展示标签，支持传入表达式。   底层是通过CSS的display属性隐藏，不会删除dom中的元素 -->
      <h3 v-show="true">欢迎来到{{name}}</h3>

      <!-- v-if也是通过true或false控制标签展示，但是会删除Dom中的元素 -->
      <h3 v-if="true">IF标签页面展示</h3>
      <hr />

      <!-- 案例 -->
      <h2>当前的值是:{{val}}</h2>
      <button @click="valIncrement">点我加1</button>
      <hr />
      <div v-show="val === 1">Angular</div>
      <div v-show="val === 2">React</div>
      <div v-show="val === 3">Vue</div>

      <!-- 多个条件的话，使用if结构满足时，不会继续执行下面的else-if等，提高性能 -->
      <div v-if="val === 1">Angular</div>
      <div v-else-if="val === 2">React</div>
      <!-- if连续判断结构，不允许打断！  如果打断，则后续的都不会生效，并且会报错 -->
      <!-- div>@</div> -->
      <div v-else-if="val === 3">Vue2</div>
      <!-- else不加条件，都不满足时就会进入 -->
      <div v-else>Vue3</div>

      <!-- 如果是相同的判断条件，可使用template标签包裹统一条件 -->
      <!-- template标签不会影响结构，在渲染时会丢掉。 但是注意只能配合if条件使用，v-show默认会展示出来 -->
      <template v-if="val === 1">
        <h1>相同判断条件1</h1>
        <h1>相同判断条件2</h1>
        <h1>相同判断条件3</h1>
      </template>
    </div>
  </body>

  <script type="text/javascript">
    const vm = new Vue({
      el: "#root",
      data: {
        name: "尚硅谷",
        val: 0,
      },
      methods: {
        valIncrement() {
          this.val++;
        },
      },
    });
  </script>
</html>
